########################################
#              EXAMPLE 1:              #
########################################
# 1 through 5 become 0, .25, .5, .75, 1:
########################################

IUS=as.data.set(spss.portable.file('IUS_10_04_2021.por'))
IUS=do.call(cbind,IUS)
IUS=as.numeric(IUS);dim(IUS)=c(65,193)
IUS=IUS[,c(20:46,167)]

IUS[,1:27][IUS[,1:27]==1]=0
IUS[,1:27][IUS[,1:27]==2]=0.25
IUS[,1:27][IUS[,1:27]==3]=0.501
IUS[,1:27][IUS[,1:27]==4]=0.75
IUS[,1:27][IUS[,1:27]==5]=1

F=apply(IUS[,1:27],1,sum)
F=round(F)
IUS=cbind(IUS,F)

CARD_low=IUS[IUS[,28]<55,]
CARD_high=IUS[IUS[,28]>54,]


seq=seq(.005,.995,.01);stap = 0.01;ncel = 100
nresp = nrow(CARD_low) # 33
nresp2 = nrow(CARD_high) # 32

uit_CARD_low = matrix(0,ncel,1);n_CARD_low = 0
uit_CARD_high = matrix(0,ncel,1);n_CARD_high = 0

for (i in 1:nresp)
{
    db = dbinom(CARD_low[i,29],27,seq)
    uiti = matrix(db,ncel,1)/(sum(db)*stap)
    uit_CARD_low = uit_CARD_low + uiti ; n_CARD_low = n_CARD_low + 1
}
uit_CARD_low = uit_CARD_low / n_CARD_low

for (i in 1:nresp2)
{
    db = dbinom(CARD_high[i,29],27,seq)
    uiti = matrix(db,ncel,1)/(sum(db)*stap)
    uit_CARD_high = uit_CARD_high + uiti ; n_CARD_high = n_CARD_high + 1
}
uit_CARD_high = uit_CARD_high / n_CARD_high

par(mfrow=c(1,2))

p=seq(0.005,0.995,stap)
plot(p,uit_CARD_low,col='blue',lwd=2,type='l',ylim=c(0,8),
main=c(paste('E1. Intolerance of Uncertainty for Participants'),
paste('Choosing Few vs. Many Advantageous Cards'),
paste('Estimated Profile-Based Cliffs Delta = .28'),
paste('Its 99% Confidence Interval = (-.02, .54)')),
axes=FALSE,xlab='Probability of Intolerance of Uncertainty',ylab='Plausibility')
axis(side=1,at=seq(0,1,0.1));axis(side=2,at=seq(0,8,2),las=1)
lines(p,uit_CARD_high,col='red',lwd=2)
legend('top',cex=1,bty='n',c('Few Advantageous Cards Group (R=33)',
'Many Advantageous Cards Group (R=32)'),
col=c('blue','red'),lty=c(1,1))

y1=uit_CARD_low;y2=uit_CARD_high
DIF=matrix(0,length(y1),length(y2))
for(x in 1:length(y1))
{
for(y in 1:length(y2))
{
dif=(x-1)*stap-(y-1)*stap
DIF[x,y]=dif
}}
DIF=sign(DIF)
DEN=matrix(0,length(y1),length(y2))
for(x in 1:length(y1))
{
for(y in 1:length(y2))
{
den=y1[x]*y2[y]*stap^2
DEN[x,y]=den
}}
CD_real=sum(DIF*DEN)/sum(DEN);CD_real



########################################
#              EXAMPLE 2:              #
########################################
# 1 through 5 become 0, .25, .5, .75, 1:
########################################

# Politics:    cv13f207: Welke partij op 12 september 2012?
# 			 3 PVV: 349 respondenten / 303 respondenten / 301 respondenten
# 			 8 GL:  122 respondenten /  97 respondenten

# Personality: cp13f024 Heb een uitgebreide woordenschat            + 29
# 	       cp13f029 Heb moeite om abstracte ideeën te begrijpen - 34
# 	       cp13f034 Heb een levendige fantasie                  + 39
# 	       cp13f039 Ben niet geïnteresseerd in abstracte ideeën - 44
# 	       cp13f044 Heb uitstekende ideeën                      + 49
# 	       cp13f049 Heb geen goede verbeelding                  - 54
# 	       cp13f054 Begrijp dingen snel                         + 59
# 	       cp13f059 Gebruik moeilijke woorden                   + 64
# 	       cp13f064 Besteed tijd om over dingen na te denken    + 69
# 	       cp13f069 Zit vol met ideeën                          + 74

NEW_Politics=Politics[,c(1,58)]
NEW_Politics[is.na(NEW_Politics[,2])]=0

PVV=subset(NEW_Politics,NEW_Politics[,2]==3)
rownames(PVV)=PVV[,1]

GL=subset(NEW_Politics,NEW_Politics[,2]==8)
rownames(GL)=GL[,1]

###################

# NEW_Personality op Bureaublad met items 2, 4 en 6 getransformeerd
# Portable file van gemaakt

NEW_Personality=as.data.set(spss.portable.file('NEW_Personality.por'))
NEW_Personality=do.call(cbind,NEW_Personality)
NEW_Personality=as.numeric(NEW_Personality)
dim(NEW_Personality)=c(5169,211)

Openness=NEW_Personality[,c(1,29,34,39,44,49,54,59,64,69,74)]
rownames(Openness)=Openness[,1]
Openness=Openness[,-1]

Openness[Openness==1]=0
Openness[Openness==2]=0.25
Openness[Openness==3]=0.501
Openness[Openness==4]=0.75
Openness[Openness==5]=1

F=apply(Openness,1,sum,na.rm=TRUE)
F=round(F)
Openness=cbind(Openness,F)

##########################

Openness_PVV=merge(Openness,PVV,by=0,all=TRUE)
rownames(Openness_PVV)=Openness_PVV[,1]
Openness_PVV=Openness_PVV[,-1]
Openness_PVV=Openness_PVV[rowSums(!is.na(Openness_PVV))==ncol(Openness_PVV),]

Openness_GL=merge(Openness,GL,by=0,all=TRUE)
rownames(Openness_GL)=Openness_GL[,1]
Openness_GL=Openness_GL[,-1]
Openness_GL=Openness_GL[rowSums(!is.na(Openness_GL))==ncol(Openness_GL),]

Openness_PVV=as.matrix(Openness_PVV)
Openness_GL=as.matrix(Openness_GL)

seq=seq(.005,.995,.01);stap = 0.01;ncel = 100
nresp = nrow(Openness_PVV) # 301
nresp2 = nrow(Openness_GL) # 97

uit_Openness_PVV = matrix(0,ncel,1);n_Openness_PVV = 0
uit_Openness_GL = matrix(0,ncel,1);n_Openness_GL = 0

for (i in 1:nresp)
{
    db = dbinom(Openness_PVV[i,11],10,seq)
    uiti = matrix(db,ncel,1)/(sum(db)*stap)
    uit_Openness_PVV = uit_Openness_PVV + uiti ; n_Openness_PVV = n_Openness_PVV + 1
}
uit_Openness_PVV = uit_Openness_PVV / n_Openness_PVV

for (i in 1:nresp2)
{
    db = dbinom(Openness_GL[i,11],10,seq)
    uiti = matrix(db,ncel,1)/(sum(db)*stap)
    uit_Openness_GL = uit_Openness_GL + uiti ; n_Openness_GL = n_Openness_GL + 1
}
uit_Openness_GL = uit_Openness_GL / n_Openness_GL

p=seq(0.005,0.995,stap)
plot(p,uit_Openness_PVV,col='orange',lwd=2,type='l',ylim=c(0,8),
main=c(paste('E2. Openness to Experience for'),
paste('PVV Voters vs. GroenLinks Voters'),
paste('Estimated Profile-Based Cliffs Delta = .21'),
paste('Its 99% Confidence Interval = (.10, .32)')),
axes=FALSE,xlab='Probability of Openness to Experience',ylab='Plausibility')
axis(side=1,at=seq(0,1,0.1));axis(side=2,at=seq(0,8,2),las=1)
lines(p,uit_Openness_GL,col='green3',lwd=2)
legend('top',cex=1,bty='n',c('Partij voor de Vrijheid (PVV) Voters (R=301)',
'GroenLinks (GL) Voters (R=97)'),
col=c('orange','green3'),lty=c(1,1))

y1=uit_Openness_GL;y2=uit_Openness_PVV
DIF=matrix(0,length(y1),length(y2))
for(x in 1:length(y1))
{
for(y in 1:length(y2))
{
dif=(x-1)*stap-(y-1)*stap
DIF[x,y]=dif
}}
DIF=sign(DIF)
DEN=matrix(0,length(y1),length(y2))
for(x in 1:length(y1))
{
for(y in 1:length(y2))
{
den=y1[x]*y2[y]*stap^2
DEN[x,y]=den
}}
CD_real=sum(DIF*DEN)/sum(DEN);CD_real


